</_description>
</key>
<child name="calendar" schema="org.gnome.shell.calendar"/>
- <child name="recorder" schema="org.gnome.shell.recorder"/>
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
</schema>
Keybinding to focus the active notification.
</_description>
</key>
- <key name="toggle-recording" type="as">
- <default><![CDATA[['<Control><Shift><Alt>r']]]></default>
- <_summary>Keybinding to toggle the screen recorder</_summary>
- <_description>
- Keybinding to start/stop the builtin screen recorder.
- </_description>
- </key>
</schema>
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
</key>
</schema>
- <schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/"
- gettext-domain="@GETTEXT_PACKAGE@">
- <key name="framerate" type="i">
- <default>30</default>
- <_summary>Framerate used for recording screencasts.</_summary>
- <_description>
- The framerate of the resulting screencast recordered
- by GNOME Shell's screencast recorder in frames-per-second.
- </_description>
- </key>
- <key name="pipeline" type="s">
- <default>''</default>
- <_summary>The gstreamer pipeline used to encode the screencast</_summary>
- <_description>
- Sets the GStreamer pipeline used to encode recordings.
- It follows the syntax used for gst-launch. The pipeline should have
- an unconnected sink pad where the recorded video is recorded. It will
- normally have a unconnected source pad; output from that pad
- will be written into the output file. However the pipeline can also
- take care of its own output - this might be used to send the output
- to an icecast server via shout2send or similar. When unset or set
- to an empty value, the default pipeline will be used. This is currently
- 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'
- and records to WEBM using the VP8 codec. %T is used as a placeholder
- for a guess at the optimal thread count on the system.
- </_description>
- </key>
- <key name="file-extension" type="s">
- <default>'webm'</default>
- <_summary>File extension used for storing the screencast</_summary>
- <_description>
- The filename for recorded screencasts will be a unique filename
- based on the current date, and use this extension. It should be
- changed when recording to a different container format.
- </_description>
- </key>
- </schema>
-
<schema id="org.gnome.shell.app-switcher"
path="/org/gnome/shell/app-switcher/"
gettext-domain="@GETTEXT_PACKAGE@">
ui/components/automountManager.js \
ui/components/networkAgent.js \
ui/components/polkitAgent.js \
- ui/components/recorder.js \
ui/components/telepathyClient.js \
ui/components/keyring.js \
$(NULL)
+++ /dev/null
-
-const Lang = imports.lang;
-const Main = imports.ui.main;
-
-const Gio = imports.gi.Gio;
-const Meta = imports.gi.Meta;
-const Shell = imports.gi.Shell;
-
-const Recorder = new Lang.Class({
- Name: 'Recorder',
-
- _init: function() {
- this._recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
- this._desktopLockdownSettings = new Gio.Settings({ schema: 'org.gnome.desktop.lockdown' });
- this._bindingSettings = new Gio.Settings({ schema: 'org.gnome.shell.keybindings' });
- this._recorder = null;
- },
-
- enable: function() {
- Main.wm.addKeybinding('toggle-recording',
- this._bindingSettings,
- Meta.KeyBindingFlags.NONE,
- Shell.KeyBindingMode.ALL,
- Lang.bind(this, this._toggleRecorder));
- },
-
- disable: function() {
- Main.wm.removeKeybinding('toggle-recording');
- },
-
- _ensureRecorder: function() {
- if (this._recorder == null)
- this._recorder = new Shell.Recorder({ stage: global.stage });
- return this._recorder;
- },
-
- _toggleRecorder: function() {
- let recorder = this._ensureRecorder();
- if (recorder.is_recording()) {
- recorder.close();
- Meta.enable_unredirect_for_screen(global.screen);
- } else if (!this._desktopLockdownSettings.get_boolean('disable-save-to-disk')) {
- // read the parameters from GSettings always in case they have changed
- recorder.set_framerate(this._recorderSettings.get_int('framerate'));
- /* Translators: this is a filename used for screencast recording */
- // xgettext:no-c-format
- recorder.set_file_template(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
- let pipeline = this._recorderSettings.get_string('pipeline');
-
- if (!pipeline.match(/^\s*$/))
- recorder.set_pipeline(pipeline);
- else
- recorder.set_pipeline(null);
-
- Meta.disable_unredirect_for_screen(global.screen);
- recorder.record();
- }
- }
-});
-
-const Component = Recorder;
showCalendarEvents: false,
allowSettings: false,
allowExtensions: false,
+ allowScreencast: false,
enabledExtensions: [],
hasRunDialog: false,
hasWorkspaces: false,
showCalendarEvents: true,
allowSettings: true,
allowExtensions: true,
+ allowScreencast: true,
hasRunDialog: true,
hasWorkspaces: true,
hasWindows: true,
isPrimary: true,
unlockDialog: imports.ui.unlockDialog.UnlockDialog,
components: ['networkAgent', 'polkitAgent', 'telepathyClient',
- 'keyring', 'recorder', 'autorunManager', 'automountManager'],
+ 'keyring', 'autorunManager', 'automountManager'],
panel: {
left: ['activities', 'appMenu'],
center: ['dateMenu'],
return this._modeStack[this._modeStack.length - 1];
},
- get allowScreencast() {
- return this.components.indexOf('recorder') != -1;
- },
-
_sync: function() {
let params = this._modes[this.currentMode];
let defaults;